#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2024 - 2024 heihieyouheihei, Inc. All Rights Reserved 
#
# @Time    : 2024/8/23 22:37
# @Author  : Yuyun
# @File    : leetcode_1_两数之和.py
# @IDE     : PyCharm


"""
给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
你可以假设每种输入只会对应一个答案，并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。

示例 1：
输入：nums = [2,7,11,15], target = 9
输出：[0,1]
解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1]

示例 2：
输入：nums = [3,2,4], target = 6
输出：[1,2]

示例 3：
输入：nums = [3,3], target = 6
输出：[0,1]

提示：
2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

进阶：你可以想出一个时间复杂度小于 O(n2) 的算法吗？
"""

class Solution:
    # Dict实现
    def sum_of_two(self, nums, target):
        res = {}
        result = []     #保存下标组
        for index, value in enumerate(nums):
            x = target - value
            if x in res:
                result.append([res[x], index])
            res[value] = index
        return result

    # Set实现
    def sum_of_two_I(self, nums, target):
        # 创建一个集合来存储我们目前看到的数字
        seen = set()
        result = []  # 保存下标组
        for i, num in enumerate(nums):
            complement = target - num
            if complement in seen:
                result.append([nums.index(complement), i])
            seen.add(num)
        return result

    # 暴力解法
    def sum_of_two_II(self, nums, target):
        result = []  # 保存下标组
        for i in range(len(nums)):
            for j in range(i + 1, len(nums)):
                if nums[i] + nums[j] == target:
                    result.append([i, j])
        return result

    # 双指针法定位下标
    def sum_of_two_III(self, nums, target):
        sorted_nums = sorted(nums)
        result = []  # 保存下标组
        left = 0
        right = len(nums) - 1
        while left < right:
            total = nums[left] + nums[right]
            if total == target:
                left_index = nums.index(sorted_nums[left])
                right_index = nums.index(sorted_nums[right])
                # 两数相同，则更新right下标
                if left_index == right_index:
                    right_index = nums[left + 1:].index(sorted_nums[right]) + left + 1
                result.append([left_index, right_index])
                #向中间移动，可以防止同一个数重复使用
                left += 1
                right -= 1
            elif total < target:
                left += 1
            else:
                right -= 1
        return result

if __name__ == '__main__':
    nums = list(map(int, input().split(',')))
    target = int(input())
    solution = Solution()

    result = solution.sum_of_two_III(nums, target)
    print(result)